# @Time : 2025-01-11 17:33
# @Author : Fioman 
# @Phone : 13149920693
from ctypes import c_longlong

from drivers import zmc_base
from personal_tool.data_result import DataResult

"""
上料控制通信类,主要控制上料控制器的通信
"""
camZmcParamsKey = [
    "Xwidth",  # 轴有效行程  mm :0
    "Xunits",  # 轴当量，单位 p/mm :2 导程25，无减速机，电子齿轮比25,
    "XminSpeed",  # 轴最小速度,单位 mm/s :4
    "XmaxSpeed",  # 轴最大速度，单位 mm/s :6
    "XworkingSpeed",  # 轴工作速度，单位 mm/s :8
    "Xaccel",  # 轴加速度，单位 mm/s2 :10
    "Xdecel",  # 轴减速度，单位 mm/s2 :12
    "Xsramp",  # 加减速过程S曲线设置，单位ms :14
    "XhomeSpeed",  # 轴回零速度，单位 mm/s :16
    "Xhomeaccel",  # 轴回零加速度，单位 mm/s2 :18
    "Xhomedecel",  # 轴回零减速度，单位 mm/s2 :20

    "YReducerRatio",  # 轴减速比 :22
    "YElecGearRatio",  # 轴电子齿轮比  :24
    "ENcoderR",  # 轴编码器分辨率  :26
    "transporterRH",  # 轴滚筒直径  :28
    "transporterPH",  # 轴皮带厚度  :30
    "Yunits",  # 轴当量，单位 p/mm  :32
    "YminSpeed",  # 轴最小速度,单位 mm/s :34
    "YmaxSpeed",  # 轴最大速度，单位 mm/s :36
    "YworkingSpeed",  # 轴工作速度，单位 mm/s :38
    "Yaccel",  # 轴加速度，单位 mm/s2 :40
    "Ydecel",  # 轴减速度，单位 mm/s2 :42
    "Ysramp",  # 加减速过程S曲线设置，单位ms :44
    "YhomeSpeed",  # 轴回零速度，单位 mm/s :46
    "Yhomeaccel",  # 轴回零加速度，单位 mm/s2 :48
    "Yhomedecel",  # 轴回零减速度，单位 mm/s2 :50
    "YreworkingSpeed",  # 重拍速度，单位 mm/s :52
    "YreworkingAccel",  # 重拍加速度，单位 mm/s2 :54
    "YreworkingDecel",  # 重拍减速度，单位 mm/s2 :56

    "Zwidth",  # 轴有效行程 mm :58
    "Zunits",  # 轴当量，单位 p/mm :60,导程20
    "ZminSpeed",  # 轴最小速度,单位 mm/s :62
    "ZmaxSpeed",  # 轴最大速度，单位 mm/s :64
    "ZworkingSpeed",  # 轴工作速度，单位 mm/s :66
    "Zaccel",  # 轴加速度，单位 mm/s2 :68
    "Zdecel",  # 轴减速度，单位 mm/s2 :70
    "Zsramp",  # 加减速过程S曲线设置，单位ms :72
    "ZhomeSpeed",  # 轴回零速度，单位 mm/s :74
    "Zhomeaccel",  # 轴回零加速度，单位 mm/s2 :76
    "Zhomedecel",  # 轴回零减速度，单位 mm/s2 :78

    "Rwidth",  # 轴有效行程 mm :80
    "Runits",  # 轴当量，单位 p/mm :82
    "RminSpeed",  # 轴最小速度,单位 mm/s :84
    "RmaxSpeed",  # 轴最大速度，单位 mm/s :86
    "RworkingSpeed",  # 轴工作速度，单位 mm/s :88
    "Raccel",  # 轴加速度，单位 mm/s2 :90
    "Rdecel",  # 轴减速度，单位 mm/s2 :92
    "Rsramp",  # 加减速过程S曲线设置，单位ms :94
    "RhomeSpeed",  # 轴回零速度，单位 mm/s :96
    "Rhomeaccel",  # 轴回零加速度，单位 mm/s2 :98
    "Rhomedecel",  # 轴回零减速度，单位 mm/s2 :100
]


class CamZmc:
    def __init__(self):
        self.handler = c_longlong()
        self.ip = "192.168.0.11"

    def __del__(self):
        """
        析构函数,释放资源
        """
        self.close_zmc_conn()

    def close_zmc_conn(self) -> DataResult:
        """
        关闭zmc连接
        """
        return zmc_base.close_zmc(self.handler)

    def check_conenct(self):
        """
        检查zmc连接
        """
        readPos = 0
        count = 1
        return zmc_base.check_connect_zmc(self.handler, readPos, count)

    def start_zmc(self):
        """
        启动zmc
        """
        return zmc_base.start_zmc(self.handler)
